#include <QApplication>      // 包含 QApplication 类，用于管理 Qt GUI 应用程序的事件循环
#include <QWidget>           // 包含 QWidget 类，是所有控件的基类
#include <QVBoxLayout>       // 包含 QVBoxLayout 类，用于控件纵向布局
#include "FloatTextEdit.h"   // 包含自定义 FloatTextEdit 类的声明

int main(int argc, char *argv[])
{
    // 创建 Qt 应用程序对象，管理应用程序生命周期和事件循环
    QApplication a(argc, argv);

    // 创建主窗口对象，继承自 QWidget
    QWidget mainWidget;
    mainWidget.setWindowTitle("浮动 QTextEdit 修正版"); // 设置窗口标题

    // 创建主窗口的纵向布局
    // 该布局会管理 mainWidget 内部控件的排列方式
    QVBoxLayout *mainLayout = new QVBoxLayout(&mainWidget);

    // 创建自定义控件 FloatTextEdit 对象
    // 该控件内部包含 QLabel、QTextEdit、QPushButton，并支持浮动/回位
    FloatTextEdit *editorWidget = new FloatTextEdit;

    // 将 FloatTextEdit 添加到主窗口的纵向布局中
    mainLayout->addWidget(editorWidget);

    // 设置主窗口初始大小（宽 600，高 400）
    mainWidget.resize(600, 400);

    // 显示主窗口
    mainWidget.show();

    // 进入 Qt 应用程序的事件循环
    // 程序会在此阻塞，等待用户操作和事件触发
    return a.exec();
}
